package com.zhengxing.jienci.user.service.rbac;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.zhengxing.jienci.user.domain.rbac.ResourceFunc;

import java.util.Collection;
import java.util.List;
import java.util.Map;

/**
 * ResourceFuncService
 *
 * @author philbert
 * @version 1.00
 */
public interface ResourceFuncService {

    /**
     * 保存资源功能
     *
     * @param resourceFunc 资源功能
     * @return true=成功；false=失败
     */
    boolean save(ResourceFunc resourceFunc);

    /**
     * 删除资源功能
     *
     * @param id 主键
     * @return true=成功；false=失败
     */
    boolean delete(String id);

    /**
     * 更新资源功能
     *
     * @param resourceFunc 资源功能
     * @return true=成功；false=失败
     */
    boolean update(ResourceFunc resourceFunc);

    /**
     * 查询资源功能
     *
     * @param id 主键
     * @return 资源功能
     */
    ResourceFunc get(String id);

    /**
     * 查询资源功能分页对象
     *
     * @param paramMap 参数Map
     * @param orderBy  排序方式
     * @param pageNo   页码
     * @param pageSize 每页最大数量
     * @return 资源功能分页对象
     */
    IPage<ResourceFunc> getPagination(Map<String, Object> paramMap, String orderBy, int pageNo, int pageSize);

    /**
     * 查询名称是否已存在
     *
     * @param resourceId 资源主键
     * @param name       名称
     * @param excludId   要排除的记录主键
     * @return true=已存在；false=不存在
     */
    boolean nameExist(String resourceId, String name, String excludId);

    /**
     * 查询代码是否已存在
     *
     * @param resourceId 资源主键
     * @param code       代码
     * @param excludId   要排除的记录主键
     * @return true=已存在；false=不存在
     */
    boolean codeExist(String resourceId, String code, String excludId);

    /**
     * 根据资源主键集合删除资源功能
     *
     * @param resourceIds     资源主键集合
     * @param includeListFunc 是否删除列表功能
     */
    void deleteByResourceIds(Collection<String> resourceIds, boolean includeListFunc);

    /**
     * 通过资源主键查询资源功能
     *
     * @param resourceId 资源主键
     * @return 该资源的功能
     */
    List<ResourceFunc> findByResourceId(String resourceId);

    /**
     * 通过资源主键查询资源列表功能的主键
     *
     * @param resourceId 资源主键
     * @return 资源列表功能的主键
     */
    String getListFuncIdByResourceId(String resourceId);

}
